package com.meterreadingsys.util;

import org.achartengine.model.CategorySeries;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.renderer.SimpleSeriesRenderer;
import org.achartengine.renderer.XYMultipleSeriesRenderer;

import android.database.Cursor;
import android.graphics.Color;

public class AChartEngine {


	/**
	 * 初始化描绘器
	 * 
	 * @return
	 */
	public XYMultipleSeriesRenderer getBarRenderer(Cursor cur) {
		XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
		// 通过SimpleSeriesDenderer设置描绘器的颜色
		SimpleSeriesRenderer r = new SimpleSeriesRenderer();
	
		r.setColor(Color.BLUE);
		
		renderer.addSeriesRenderer(r);
		setChartSettings(renderer,cur);// 设置描绘器的其他属性
		//添加X坐标描述
		boolean b= cur.moveToFirst();
		 int count=1;
		if(b){
			
		        do{	        	
		        	renderer.addTextLabel(count, cur.getString(cur.getColumnIndex("_name")));
		        	count++;	        	
		        }while(cur.moveToNext());
		}
	       
		renderer.setXLabels(0);
		return renderer;
	}

	private void setChartSettings(XYMultipleSeriesRenderer renderer,Cursor cor) {
		System.out.println("查询数据条数为："+cor.getCount());
		renderer.setChartTitle("月用水量记录");// 设置柱图名称
		renderer.setXTitle("月份");// 设置X轴名称
	
		renderer.setAxesColor(Color.RED);//设置X轴颜色
		renderer.setLabelsColor(Color.BLUE);//设置坐标颜色.

	    
		renderer.setYTitle("用水量");// 设置Y轴名称
		renderer.setXAxisMin(0.5);// 设置X轴的最小值
		renderer.setXAxisMax(cor.getCount()+0.5);// 设置X轴的最大值
		renderer.setYAxisMin(0);// 设置Y轴的最小值
		renderer.setYAxisMax(queryMaxValue(cor));// 设置Y轴最大值
		renderer.setYLabels(20);
    	renderer.setDisplayChartValues(true); // 设置是否在柱体上方显示值	
		renderer.setShowGrid(true);// 设置是否在图表中显示网格
		renderer.setXLabels(cor.getColumnCount());// 设置X轴显示的刻度标签的个数
		renderer.setChartValuesTextSize(15);
		


	}

	// 数据设置
	public XYMultipleSeriesDataset getBarDataset(Cursor cur) {

		XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();

		CategorySeries series = new CategorySeries("月用水量"); // 声明一个柱形图

		// 为柱形图添加值
		while (cur.moveToNext()){
			series.add(cur.getDouble(cur.getColumnIndex("money")));
		}
			
		dataset.addSeries(series.toXYSeries());// 添加该柱形图到数据设置列表

		return dataset;

	}
   public Integer queryMaxValue(Cursor cur){
	   int i=0;
	   int n=0;
	   while(cur.moveToNext()){
		   n=Integer.parseInt(cur.getString(cur.getColumnIndex("money")));
		   if(n>i){
			   i=n;
		   }
	   }
	return (int)(1.2*i);
   }
}